package reflect;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * 自动调用Person类中所有本类定义的公开的无参方法名字中含有'o'的
 * 提示
 * Method类提供了方法:int getParameterCount()可以获取器表示的方法的参数个数
 */
public class Test2 {
    public static void main(String[] args) throws Exception{
        Class cls = Class.forName("reflect.Person");
        Object o = cls.newInstance();
        Method[] methods = cls.getDeclaredMethods();
        for (Method method : methods) {
            String name = method.getName();
            if (name.contains("o")) {
            System.out.println(name);
                System.out.println();

                if (method.getParameterCount() == 0 &&
                        method.getModifiers() == Modifier.PUBLIC
                ) {
                    method.invoke(o);
                }
//            else {
//                method.setAccessible(true);
//                method.invoke(o);
//                method.setAccessible(false);
//            }
                System.out.println();
            }
        }

    }
}
